來介紹微服務的基礎建設 --API Gateway
想像我們現在有了 OrderService CustomerSerivce PayService , client端直接使用restful web api與三個service溝通,每個服務都會相依於前一個服務的結果, 相較於傳統monolithic現在client需要完成一次交易除了要發三個request 還要加上中間等到response的時間….(用戶: 你們新系統怎麼比以前還慢啊)
又另外一個狀況發生, 因為過載或是服務故障,OrderService1出了問題,好險我們有微服務,趕快啟動一個OrderService2來取代, 突然發現我們的client只認得OrderService1,糟糕了………難不成我們需要每個服務掛掉啟動都通知用戶端………(用戶:你們系統好不穩喔)
為了不客戶端直接跟子系統溝通, 或者說暴露太多的介面給客戶端, 一般會應用Façade pattern將子系統們封裝起來, 對client只暴露必要的介面, 降低client端與服務端的直接掛鉤, 在微服務的API應用上會給一個名詞 "API gateway"
我們來看看微軟電子書提供漂漂亮亮的示意圖
藉由API Gateway, 讓client不會依賴低層的服務本身,抽換服務實體也不會影響client與API gateway間的通信,也可以在API Gateway後封裝其他功能像是load balancer, service discovery, service registry等